# -*- coding: utf-8 -*-

#使用Python的Playwright库在多线程环境下同时打开并操作多个浏览器，每个浏览器运行不同的账号。通过设置不同的user_data_dir实现用户数据隔离，确保账号间不混淆。

from playwright.sync_api import sync_playwright
from threading import Thread





def do_some_thing(username, password):
    p = sync_playwright().start()
    #launch_persistent_context 是非无痕启动浏览器，如果需要多个账号同时保持登录，需要设置不同的user_data_dir用户数据目录，让用户数据隔离
    browser = p.chromium.launch_persistent_context(
        # 指定本机用户缓存地址
        user_data_dir=f"D:\chrome_userx\{username}",
        # 接收下载事件
        accept_downloads=True,
        # 设置 GUI 模式
        headless=False,
        bypass_csp=True,
        slow_mo=1000
    )
    page = browser.pages[0]
    page.goto("http://192.168.7.136:3000/login?redirect=%2F")
    page.get_by_placeholder("请输入账号").fill(username)
    page.get_by_role("textbox", name="请输入密码").fill(password)
    page.get_by_role("button", name="登录")


    browser.close()

if __name__ == '__main__':

    users = [
        ["028845", "Julian1!"],
        ["admin", "Julian1!"]
    ]

    # 多线程，2个账号同时操作
    for user in users:
        thread = Thread(target=do_some_thing, args=user)
        thread.start()